/**
 * org.assess.oa.system.service.TbUserService
 */
package org.assess.oa.system.service;

import java.util.List;

import org.assess.core.service.ServiceResult;
import org.assess.oa.system.bean.TbUser;
import org.assess.oa.system.bean.TbUserPost;
import org.assess.oa.system.bean.TbUserRole;

/**
 * @description 用户管理的Service层接口
 * @author XiaLongxiang
 * @createtime 2012-5-17 下午12:14:17
 */
public interface TbUserService {
    /**
     * 根据user_code查询用户信息
     * @param user
     * @return
     */
    public TbUser queryTbUserByCode(TbUser user);
    
    /**
     * 分页查找用户信息，并返回支持系统分页的json字符串
     * @param page
     * @param rows
     * @param user
     * @return
     */
    public String queryTbUserAsString(int page, int rows, TbUser user);
    
    /**
     * 根据用户编码查询用户岗位关联信息，并返回用户岗位关联信息列表
     * @param user
     * @param include - 若为true则表示使用类似外连接的方式查询出所有的用户岗位关联信息；反之则仅查询内链接的信息
     * @return
     */
    public List<TbUserPost> queryTbUserPostByUserCodeAsList(TbUser user, boolean include);
    
    /**
     * 根据用户编码查询用户角色关联信息，并返回用户角色关联信息列表
     * @param user
     * @param include - 若为true则表示使用类似外连接的方式查询出所有的用户角色关联信息；反之则仅查询内链接的信息
     * @return
     */
    public List<TbUserRole> queryTbUserRoleByUserCodeAsList(TbUser user, boolean include);
    
    /**
     * 检查用户，主要是检查用户编码是否重复<br>
     * 如果user对象的nickname
     * @param user
     * @return
     */
    public String checkTbUser(TbUser user);
    
    /**
     * 更改用户的valid_flag属性
     * @param user
     * @return
     */
    public String updateValid(TbUser user) throws Exception;
    
    /**
     * 保存用户信息
     * @param user
     * @param roleString
     * @param postString
     * @param edit
     * @return
     */
    public ServiceResult saveTbUser(TbUser user, String roleString, String postString, String scopeString, boolean edit) throws Exception;
    
    /**
     * 用户登录
     * @param username
     * @param password
     * @return
     */
    public Object[] login(String username, String password) throws Exception;
}
